<?php
/*
************************************************************************
Copyright [2011] [PagSeguro Internet Ltda.]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
************************************************************************
*/

require_once "../PagSeguroLibrary/PagSeguroLibrary.php";
require_once "config.php";
/**
 * Class with a main method to illustrate the usage of the domain class PagSeguroPaymentRequest
 */
class PaymentRequest {
    /**
     * Itens escolhidos para este pagamento
     * @var type Array[] itens
     */
    private $itens;
    /**
     * Cliente que está efetuando o pagamento
     * @var type Cliente
     */
    private $cliente;
    /**
     * UrlPara onde o cliente será redirecionado após pagamento
     * @var type String
     */
    private $urlRedirecionamento;
    /**
     * Código único pagamento
     * @var type String
     */
    private $codigoReferenciaPagamento;
    /**
     * Sigla da moeda utilizada na transação Ex.: sigra de R$ é "BRL"
     * @var type String
     */
    private $moeda; 
    
    public function __construct($itens, $cliente, $urlRedirecionamento, $codigoReferenciaPagamento = "REF1234",  $moeda = "BRL") {
        $this->itens = $itens;
        $this->cliente = $cliente;
        $this->urlRedirecionamento = $urlRedirecionamento;
        $this->codigoReferenciaPagamento = $codigoReferenciaPagamento;
        $this->moeda = $moeda;
    }
    
    public function efetuarPagamento () {
		// Instantiate a new payment request
		$paymentRequest = new PagSeguroPaymentRequest();
		
		// Sets the currency
		$paymentRequest->setCurrency($this->moeda);
                //itera sobre todos os itens que serão enviados pra compra
		foreach ($this->itens as $item) {
                    //adiciona os itens na requisição de pagamento (o utf8_decode serve para transformar de utf8 para iso o encoding
                    //já que a api do pagseguro não tem opção de receber dados em utf-8
                    $paymentRequest->addItem($item->getId(), utf8_decode ($item->getDescricao()), $item->getQuantidade(), $item->getValor());
                }
		
		// Seta um código de referencia para este pagamento.
                // TODO verificar se a alteraçao deste codigo não implicara no mal funcionamento da compra
		//$paymentRequest->setReference($this->getCodigoReferenciaPagamento());
		
		
		// Sets informações do cliente. TODO modificado para apenas dois parametros para simplificar
		//$paymentRequest->setSender('João Comprador', 'comprador@uol.com.br', '11', '56273440');
                $paymentRequest->setSender(utf8_decode($this->getCliente()->getNome()), utf8_decode($this->getCliente()->getEmail()));
                //Seta pagina para onde cliente será redirecionado após a compra
		$paymentRequest->setRedirectUrl($this->urlRedirecionamento);
		
		try {
			
			/*
			* #### Crendencials ##### 
			* Substitute the parameters below with your credentials (e-mail and token)
			* You can also get your credentails from a config file. See an example:
			* $credentials = PagSeguroConfig::getAccountCredentials();
			*/			
			$credentials = new PagSeguroAccountCredentials(EMAIL_ADMIN, TOKEN_ADMIN);
			
			
			// Register this payment request in PagSeguro, to obtain the payment URL for redirect your customer.
			$url = $paymentRequest->register($credentials);
			
			$this->printPaymentUrl($url);
			
		} catch (PagSeguroServiceException $e) {
			die($e->getMessage());
		}
		
	}
	
	public function printPaymentUrl($url) {
		if ($url) {
			//echo "<h2>Criando requisição de pagamento</h2>";
			//echo "<p>URL do pagamento: <strong>$url</strong></p>";
			//echo "<p><a title=\"URL do pagamento\" href=\"$url\">Ir para URL do pagamento.</a></p>";
                        header("Location: $url");
		}
	}
        public function getItens() {
            return $this->itens;
        }

        public function setItens($itens) {
            $this->itens = $itens;
        }

        public function getCliente() {
            return $this->cliente;
        }

        public function setCliente($cliente) {
            $this->cliente = $cliente;
        }

        public function getUrlRedirecionamento() {
            return $this->urlRedirecionamento;
        }

        public function setUrlRedirecionamento($urlRedirecionamento) {
            $this->urlRedirecionamento = $urlRedirecionamento;
        }

        public function getCodigoReferenciaPagamento() {
            return $this->codigoReferenciaPagamento;
        }

        public function setCodigoReferenciaPagamento($codigoReferenciaPagamento) {
            $this->codigoReferenciaPagamento = $codigoReferenciaPagamento;
        }

        public function getMoeda() {
            return $this->moeda;
        }

        public function setMoeda($moeda) {
            $this->moeda = $moeda;
        }
}

//createPaymentRequest::main();

?>